gui/macOS: Properly wait for eviction result in materialised items model
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Wed, 26 Mar 2025 12:28:37 +0000 (13:28 +0100)
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>
Thu, 27 Mar 2025 14:16:05 +0000 (14:16 +0000)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/macOS/fileprovidermaterialiseditemsmodel_mac.mm

index 646f583b45f793714a7b152af14c2ff93316a226..b2fe54011e0258751abbbff2cb05234621bf65e0 100644 (file)
@@ -42,7 +42,8 @@ void FileProviderMaterialisedItemsModel::evictItem(const QString &identifier, co
         return;
     }
 
-    __block BOOL successfullyDeleted = YES;
+    __block BOOL successfullyDeleted = NO;
+    dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
 
     [manager evictItemWithIdentifier:identifier.toNSString() completionHandler:^(NSError *error) {
         if (error != nil) {
@@ -51,10 +52,13 @@ void FileProviderMaterialisedItemsModel::evictItem(const QString &identifier, co
             Systray::instance()->showMessage(tr("Error"),
                                              tr("An error occurred while trying to delete the local copy of this item: %1").arg(errorDesc),
                                              QSystemTrayIcon::Warning);
-            successfullyDeleted = NO;
+        } else {
+            successfullyDeleted = YES;
         }
+        dispatch_semaphore_signal(semaphore);
     }];
 
+    dispatch_semaphore_wait(semaphore, dispatch_time(DISPATCH_TIME_NOW, 3 * NSEC_PER_SEC));
     if (successfullyDeleted == NO) {
         return;
     }